package com.dragon.modules.yuegou.entity.order;

import com.baomidou.mybatisplus.annotation.TableName;
import com.dragon.modules.yuegou.enums.SkuType;
import com.dragon.modules.yuegou.enums.order.OrderItemSellerType;
import com.dragon.modules.yuegou.enums.order.OrderItemTemplateType;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 订单物品实体类<br>
 * 对应的表为：ord_order_item<br>
 * 
 * @author pbuilder generated
 * @date 2020-07-07 09:57:15
 * @company sgy
 * @version 2.0
 */
@TableName("ord_order_item")
@ApiModel(description = "订单物品")
public class OrderItemEntity {

    /** 订单物品ID */
	@ApiModelProperty("订单物品ID")
	protected String id;

    /** 订单号 */
	@ApiModelProperty("订单号")
	protected String orderNo;

    /** 商品ID */
	@ApiModelProperty("商品ID")
	protected String skuId;

    /** [全局枚举]商品类型：0-悦卡-YUECARD、1-套餐-PACKAGE、2-商户停车券-PARKCOUPON、3-积分停车券-POINTPARKCOUPON、4-实物-GOODS、5-积分商品-POINTGOODS、6-伪造商品-MOCK、7-奖品-PRIZE */
	@ApiModelProperty("[全局枚举]商品类型：0-悦卡-YUECARD、1-套餐-PACKAGE、2-商户停车券-PARKCOUPON、3-积分停车券-POINTPARKCOUPON、4-实物-GOODS、5-积分商品-POINTGOODS、6-伪造商品-MOCK、7-奖品-PRIZE")
	protected SkuType skuType;

    /** 商品名 */
	@ApiModelProperty("商品名")
	protected String skuTitle;

    /** 商品单价 */
	@ApiModelProperty("商品单价")
	protected BigDecimal skuPrice;

    /** 原价 */
	@ApiModelProperty("原价")
	protected BigDecimal skuOriginalPrice;

    /** 折扣价（用这个价格计算） */
	@ApiModelProperty("折扣价（用这个价格计算）")
	protected BigDecimal skuDiscountPrice;

    /** 商品积分 */
	@ApiModelProperty("商品积分")
	protected Integer skuPoints;

    /** 商品图片地址 */
	@ApiModelProperty("商品图片地址")
	protected String skuMainImages;

    /** 单位，待确定（商品模块） */
	@ApiModelProperty("单位，待确定（商品模块）")
	protected Integer skuUnit;

    /** SKU规格属性 JSON存储 */
	@ApiModelProperty("SKU规格属性 JSON存储")
	protected String skuAttrs;

    /** 数量 */
	@ApiModelProperty("数量")
	protected Integer num;

    /** 抵扣金额 */
	@ApiModelProperty("抵扣金额")
	protected BigDecimal discountFee;

    /** 优惠券抵扣金额 */
	@ApiModelProperty("优惠券抵扣金额")
	protected BigDecimal couponDiscountFee;

    /** 总金额（amount = price * num) */
	@ApiModelProperty("总金额（amount = price * num)")
	protected BigDecimal totalAmount;

    /** 总积分 */
	@ApiModelProperty("总积分")
	protected Integer totalPoints;

    /** [枚举]卖家类型：0-平台-PLATFORM、1-集团-GROUP、2-商圈-BUSD、3-商户-MERCHANT */
	@ApiModelProperty("[枚举]卖家类型：0-平台-PLATFORM、1-集团-GROUP、2-商圈-BUSD、3-商户-MERCHANT")
	protected OrderItemSellerType sellerType;

    /** 集团ID */
	@ApiModelProperty("集团ID")
	protected String groupId;

    /** 商圈ID */
	@ApiModelProperty("商圈ID")
	protected String busdId;

    /** 商户ID */
	@ApiModelProperty("商户ID")
	protected String merchantId;

    /** 模板ID */
	@ApiModelProperty("模板ID")
	protected String templateId;

    /** [枚举]模板类型：0-优惠券-COUPON、1-悦卡-YUECARD */
	@ApiModelProperty("[枚举]模板类型：0-优惠券-COUPON、1-悦卡-YUECARD")
	protected OrderItemTemplateType templateType;

    /** 是否是虚拟商品 */
	@ApiModelProperty("是否是虚拟商品")
	protected Boolean virtualSku;

    /** 提货开始时间（为空表示无限制） */
	@ApiModelProperty("提货开始时间（为空表示无限制）")
	protected LocalDateTime pickupStartTime;

    /** 提货超时时间（为空表示永不超时） */
	@ApiModelProperty("提货超时时间（为空表示永不超时）")
	protected LocalDateTime pickupExpireTime;

	/**
	 * 构造一个空订单物品实体对象
	 */
	public OrderItemEntity(){
		super();
	}

	/**
	 * 依据其它对象的信息构造一个订单物品实体对象
	 * 
	 * @param other 其它对象
	 */
	public OrderItemEntity(OrderItemEntity other){
		super();
     	this.id = other.id;
     	this.orderNo = other.orderNo;
     	this.skuId = other.skuId;
     	this.skuType = other.skuType;
     	this.skuTitle = other.skuTitle;
     	this.skuPrice = other.skuPrice;
     	this.skuOriginalPrice = other.skuOriginalPrice;
     	this.skuDiscountPrice = other.skuDiscountPrice;
     	this.skuPoints = other.skuPoints;
     	this.skuMainImages = other.skuMainImages;
     	this.skuUnit = other.skuUnit;
     	this.skuAttrs = other.skuAttrs;
     	this.num = other.num;
     	this.discountFee = other.discountFee;
     	this.couponDiscountFee = other.couponDiscountFee;
     	this.totalAmount = other.totalAmount;
     	this.totalPoints = other.totalPoints;
     	this.sellerType = other.sellerType;
     	this.groupId = other.groupId;
     	this.busdId = other.busdId;
     	this.merchantId = other.merchantId;
     	this.templateId = other.templateId;
     	this.templateType = other.templateType;
     	this.virtualSku = other.virtualSku;
     	this.pickupStartTime = other.pickupStartTime;
     	this.pickupExpireTime = other.pickupExpireTime;
	}


	/**
	 * 获取订单物品ID
	 * 
	 * @return id 订单物品ID
	 */
	public String getId() {
		return id;
	}
  	
	/**
	 * 设置订单物品ID
	 * 
	 * @param id 订单物品ID
	 */
	public void setId(String id) {
		this.id = id;
	}

	/**
	 * 获取订单号
	 * 
	 * @return orderNo 订单号
	 */
	public String getOrderNo() {
		return orderNo;
	}
  	
	/**
	 * 设置订单号
	 * 
	 * @param orderNo 订单号
	 */
	public void setOrderNo(String orderNo) {
		this.orderNo = orderNo;
	}

	/**
	 * 获取商品ID
	 * 
	 * @return skuId 商品ID
	 */
	public String getSkuId() {
		return skuId;
	}
  	
	/**
	 * 设置商品ID
	 * 
	 * @param skuId 商品ID
	 */
	public void setSkuId(String skuId) {
		this.skuId = skuId;
	}

	/**
	 * 获取[全局枚举]商品类型：0-悦卡-YUECARD、1-套餐-PACKAGE、2-商户停车券-PARKCOUPON、3-积分停车券-POINTPARKCOUPON、4-实物-GOODS、5-积分商品-POINTGOODS、6-伪造商品-MOCK、7-奖品-PRIZE
	 * 
	 * @return skuType [全局枚举]商品类型：0-悦卡-YUECARD、1-套餐-PACKAGE、2-商户停车券-PARKCOUPON、3-积分停车券-POINTPARKCOUPON、4-实物-GOODS、5-积分商品-POINTGOODS、6-伪造商品-MOCK、7-奖品-PRIZE
	 */
	public SkuType getSkuType() {
		return skuType;
	}
  	
	/**
	 * 设置[全局枚举]商品类型：0-悦卡-YUECARD、1-套餐-PACKAGE、2-商户停车券-PARKCOUPON、3-积分停车券-POINTPARKCOUPON、4-实物-GOODS、5-积分商品-POINTGOODS、6-伪造商品-MOCK、7-奖品-PRIZE
	 * 
	 * @param skuType [全局枚举]商品类型：0-悦卡-YUECARD、1-套餐-PACKAGE、2-商户停车券-PARKCOUPON、3-积分停车券-POINTPARKCOUPON、4-实物-GOODS、5-积分商品-POINTGOODS、6-伪造商品-MOCK、7-奖品-PRIZE
	 */
	public void setSkuType(SkuType skuType) {
		this.skuType = skuType;
	}

	/**
	 * 获取商品名
	 * 
	 * @return skuTitle 商品名
	 */
	public String getSkuTitle() {
		return skuTitle;
	}
  	
	/**
	 * 设置商品名
	 * 
	 * @param skuTitle 商品名
	 */
	public void setSkuTitle(String skuTitle) {
		this.skuTitle = skuTitle;
	}

	/**
	 * 获取商品单价
	 * 
	 * @return skuPrice 商品单价
	 */
	public BigDecimal getSkuPrice() {
		return skuPrice;
	}
  	
	/**
	 * 设置商品单价
	 * 
	 * @param skuPrice 商品单价
	 */
	public void setSkuPrice(BigDecimal skuPrice) {
		this.skuPrice = skuPrice;
	}

	/**
	 * 获取原价
	 * 
	 * @return skuOriginalPrice 原价
	 */
	public BigDecimal getSkuOriginalPrice() {
		return skuOriginalPrice;
	}
  	
	/**
	 * 设置原价
	 * 
	 * @param skuOriginalPrice 原价
	 */
	public void setSkuOriginalPrice(BigDecimal skuOriginalPrice) {
		this.skuOriginalPrice = skuOriginalPrice;
	}

	/**
	 * 获取折扣价（用这个价格计算）
	 * 
	 * @return skuDiscountPrice 折扣价（用这个价格计算）
	 */
	public BigDecimal getSkuDiscountPrice() {
		return skuDiscountPrice;
	}
  	
	/**
	 * 设置折扣价（用这个价格计算）
	 * 
	 * @param skuDiscountPrice 折扣价（用这个价格计算）
	 */
	public void setSkuDiscountPrice(BigDecimal skuDiscountPrice) {
		this.skuDiscountPrice = skuDiscountPrice;
	}

	/**
	 * 获取商品积分
	 * 
	 * @return skuPoints 商品积分
	 */
	public Integer getSkuPoints() {
		return skuPoints;
	}
  	
	/**
	 * 设置商品积分
	 * 
	 * @param skuPoints 商品积分
	 */
	public void setSkuPoints(Integer skuPoints) {
		this.skuPoints = skuPoints;
	}

	/**
	 * 获取商品图片地址
	 * 
	 * @return skuMainImages 商品图片地址
	 */
	public String getSkuMainImages() {
		return skuMainImages;
	}
  	
	/**
	 * 设置商品图片地址
	 * 
	 * @param skuMainImages 商品图片地址
	 */
	public void setSkuMainImages(String skuMainImages) {
		this.skuMainImages = skuMainImages;
	}

	/**
	 * 获取单位，待确定（商品模块）
	 * 
	 * @return skuUnit 单位，待确定（商品模块）
	 */
	public Integer getSkuUnit() {
		return skuUnit;
	}
  	
	/**
	 * 设置单位，待确定（商品模块）
	 * 
	 * @param skuUnit 单位，待确定（商品模块）
	 */
	public void setSkuUnit(Integer skuUnit) {
		this.skuUnit = skuUnit;
	}

	/**
	 * 获取SKU规格属性 JSON存储
	 * 
	 * @return skuAttrs SKU规格属性 JSON存储
	 */
	public String getSkuAttrs() {
		return skuAttrs;
	}
  	
	/**
	 * 设置SKU规格属性 JSON存储
	 * 
	 * @param skuAttrs SKU规格属性 JSON存储
	 */
	public void setSkuAttrs(String skuAttrs) {
		this.skuAttrs = skuAttrs;
	}

	/**
	 * 获取数量
	 * 
	 * @return num 数量
	 */
	public Integer getNum() {
		return num;
	}
  	
	/**
	 * 设置数量
	 * 
	 * @param num 数量
	 */
	public void setNum(Integer num) {
		this.num = num;
	}

	/**
	 * 获取抵扣金额
	 * 
	 * @return discountFee 抵扣金额
	 */
	public BigDecimal getDiscountFee() {
		return discountFee;
	}
  	
	/**
	 * 设置抵扣金额
	 * 
	 * @param discountFee 抵扣金额
	 */
	public void setDiscountFee(BigDecimal discountFee) {
		this.discountFee = discountFee;
	}

	/**
	 * 获取优惠券抵扣金额
	 * 
	 * @return couponDiscountFee 优惠券抵扣金额
	 */
	public BigDecimal getCouponDiscountFee() {
		return couponDiscountFee;
	}
  	
	/**
	 * 设置优惠券抵扣金额
	 * 
	 * @param couponDiscountFee 优惠券抵扣金额
	 */
	public void setCouponDiscountFee(BigDecimal couponDiscountFee) {
		this.couponDiscountFee = couponDiscountFee;
	}

	/**
	 * 获取总金额（amount = price * num)
	 * 
	 * @return totalAmount 总金额（amount = price * num)
	 */
	public BigDecimal getTotalAmount() {
		return totalAmount;
	}
  	
	/**
	 * 设置总金额（amount = price * num)
	 * 
	 * @param totalAmount 总金额（amount = price * num)
	 */
	public void setTotalAmount(BigDecimal totalAmount) {
		this.totalAmount = totalAmount;
	}

	/**
	 * 获取总积分
	 * 
	 * @return totalPoints 总积分
	 */
	public Integer getTotalPoints() {
		return totalPoints;
	}
  	
	/**
	 * 设置总积分
	 * 
	 * @param totalPoints 总积分
	 */
	public void setTotalPoints(Integer totalPoints) {
		this.totalPoints = totalPoints;
	}

	/**
	 * 获取[枚举]卖家类型：0-平台-PLATFORM、1-集团-GROUP、2-商圈-BUSD、3-商户-MERCHANT
	 * 
	 * @return sellerType [枚举]卖家类型：0-平台-PLATFORM、1-集团-GROUP、2-商圈-BUSD、3-商户-MERCHANT
	 */
	public OrderItemSellerType getSellerType() {
		return sellerType;
	}
  	
	/**
	 * 设置[枚举]卖家类型：0-平台-PLATFORM、1-集团-GROUP、2-商圈-BUSD、3-商户-MERCHANT
	 * 
	 * @param sellerType [枚举]卖家类型：0-平台-PLATFORM、1-集团-GROUP、2-商圈-BUSD、3-商户-MERCHANT
	 */
	public void setSellerType(OrderItemSellerType sellerType) {
		this.sellerType = sellerType;
	}

	/**
	 * 获取集团ID
	 * 
	 * @return groupId 集团ID
	 */
	public String getGroupId() {
		return groupId;
	}
  	
	/**
	 * 设置集团ID
	 * 
	 * @param groupId 集团ID
	 */
	public void setGroupId(String groupId) {
		this.groupId = groupId;
	}

	/**
	 * 获取商圈ID
	 * 
	 * @return busdId 商圈ID
	 */
	public String getBusdId() {
		return busdId;
	}
  	
	/**
	 * 设置商圈ID
	 * 
	 * @param busdId 商圈ID
	 */
	public void setBusdId(String busdId) {
		this.busdId = busdId;
	}

	/**
	 * 获取商户ID
	 * 
	 * @return merchantId 商户ID
	 */
	public String getMerchantId() {
		return merchantId;
	}
  	
	/**
	 * 设置商户ID
	 * 
	 * @param merchantId 商户ID
	 */
	public void setMerchantId(String merchantId) {
		this.merchantId = merchantId;
	}

	/**
	 * 获取模板ID
	 * 
	 * @return templateId 模板ID
	 */
	public String getTemplateId() {
		return templateId;
	}
  	
	/**
	 * 设置模板ID
	 * 
	 * @param templateId 模板ID
	 */
	public void setTemplateId(String templateId) {
		this.templateId = templateId;
	}

	/**
	 * 获取[枚举]模板类型：0-优惠券-COUPON、1-悦卡-YUECARD
	 * 
	 * @return templateType [枚举]模板类型：0-优惠券-COUPON、1-悦卡-YUECARD
	 */
	public OrderItemTemplateType getTemplateType() {
		return templateType;
	}
  	
	/**
	 * 设置[枚举]模板类型：0-优惠券-COUPON、1-悦卡-YUECARD
	 * 
	 * @param templateType [枚举]模板类型：0-优惠券-COUPON、1-悦卡-YUECARD
	 */
	public void setTemplateType(OrderItemTemplateType templateType) {
		this.templateType = templateType;
	}

	/**
	 * 获取是否是虚拟商品
	 * 
	 * @return virtualSku 是否是虚拟商品
	 */
	public Boolean getVirtualSku() {
		return virtualSku;
	}
  	
	/**
	 * 设置是否是虚拟商品
	 * 
	 * @param virtualSku 是否是虚拟商品
	 */
	public void setVirtualSku(Boolean virtualSku) {
		this.virtualSku = virtualSku;
	}

	/**
	 * 获取提货开始时间（为空表示无限制）
	 * 
	 * @return pickupStartTime 提货开始时间（为空表示无限制）
	 */
	public LocalDateTime getPickupStartTime() {
		return pickupStartTime;
	}
  	
	/**
	 * 设置提货开始时间（为空表示无限制）
	 * 
	 * @param pickupStartTime 提货开始时间（为空表示无限制）
	 */
	public void setPickupStartTime(LocalDateTime pickupStartTime) {
		this.pickupStartTime = pickupStartTime;
	}

	/**
	 * 获取提货超时时间（为空表示永不超时）
	 * 
	 * @return pickupExpireTime 提货超时时间（为空表示永不超时）
	 */
	public LocalDateTime getPickupExpireTime() {
		return pickupExpireTime;
	}
  	
	/**
	 * 设置提货超时时间（为空表示永不超时）
	 * 
	 * @param pickupExpireTime 提货超时时间（为空表示永不超时）
	 */
	public void setPickupExpireTime(LocalDateTime pickupExpireTime) {
		this.pickupExpireTime = pickupExpireTime;
	}

    public String toString() {
		return new StringBuilder().append("OrderItemEntity{").
			append("id=").append(id).
			append(",orderNo=").append(orderNo).
			append(",skuId=").append(skuId).
			append(",skuType=").append(skuType).
			append(",skuTitle=").append(skuTitle).
			append(",skuPrice=").append(skuPrice).
			append(",skuOriginalPrice=").append(skuOriginalPrice).
			append(",skuDiscountPrice=").append(skuDiscountPrice).
			append(",skuPoints=").append(skuPoints).
			append(",skuMainImages=").append(skuMainImages).
			append(",skuUnit=").append(skuUnit).
			append(",skuAttrs=").append(skuAttrs).
			append(",num=").append(num).
			append(",discountFee=").append(discountFee).
			append(",couponDiscountFee=").append(couponDiscountFee).
			append(",totalAmount=").append(totalAmount).
			append(",totalPoints=").append(totalPoints).
			append(",sellerType=").append(sellerType).
			append(",groupId=").append(groupId).
			append(",busdId=").append(busdId).
			append(",merchantId=").append(merchantId).
			append(",templateId=").append(templateId).
			append(",templateType=").append(templateType).
			append(",virtualSku=").append(virtualSku).
			append(",pickupStartTime=").append(pickupStartTime).
			append(",pickupExpireTime=").append(pickupExpireTime).
			append('}').toString();
    }

	/**
	 * 复制对象
	 * 
	 * @return 复制后的新实体对象
	 */
	public OrderItemEntity copy() {
		return new OrderItemEntity(this);
	}

    /** 订单物品ID */
	public static final String COL_ID = "id";

    /** 订单号 */
	public static final String COL_ORDER_NO = "order_no";

    /** 商品ID */
	public static final String COL_SKU_ID = "sku_id";

    /** [全局枚举]商品类型：0-悦卡-YUECARD、1-套餐-PACKAGE、2-商户停车券-PARKCOUPON、3-积分停车券-POINTPARKCOUPON、4-实物-GOODS、5-积分商品-POINTGOODS、6-伪造商品-MOCK、7-奖品-PRIZE */
	public static final String COL_SKU_TYPE = "sku_type";

    /** 商品名 */
	public static final String COL_SKU_TITLE = "sku_title";

    /** 商品单价 */
	public static final String COL_SKU_PRICE = "sku_price";

    /** 原价 */
	public static final String COL_SKU_ORIGINAL_PRICE = "sku_original_price";

    /** 折扣价（用这个价格计算） */
	public static final String COL_SKU_DISCOUNT_PRICE = "sku_discount_price";

    /** 商品积分 */
	public static final String COL_SKU_POINTS = "sku_points";

    /** 商品图片地址 */
	public static final String COL_SKU_MAIN_IMAGES = "sku_main_images";

    /** 单位，待确定（商品模块） */
	public static final String COL_SKU_UNIT = "sku_unit";

    /** SKU规格属性 JSON存储 */
	public static final String COL_SKU_ATTRS = "sku_attrs";

    /** 数量 */
	public static final String COL_NUM = "num";

    /** 抵扣金额 */
	public static final String COL_DISCOUNT_FEE = "discount_fee";

    /** 优惠券抵扣金额 */
	public static final String COL_COUPON_DISCOUNT_FEE = "coupon_discount_fee";

    /** 总金额（amount = price * num) */
	public static final String COL_TOTAL_AMOUNT = "total_amount";

    /** 总积分 */
	public static final String COL_TOTAL_POINTS = "total_points";

    /** [枚举]卖家类型：0-平台-PLATFORM、1-集团-GROUP、2-商圈-BUSD、3-商户-MERCHANT */
	public static final String COL_SELLER_TYPE = "seller_type";

    /** 集团ID */
	public static final String COL_GROUP_ID = "group_id";

    /** 商圈ID */
	public static final String COL_BUSD_ID = "busd_id";

    /** 商户ID */
	public static final String COL_MERCHANT_ID = "merchant_id";

    /** 模板ID */
	public static final String COL_TEMPLATE_ID = "template_id";

    /** [枚举]模板类型：0-优惠券-COUPON、1-悦卡-YUECARD */
	public static final String COL_TEMPLATE_TYPE = "template_type";

    /** 是否是虚拟商品 */
	public static final String COL_VIRTUAL_SKU = "virtual_sku";

    /** 提货开始时间（为空表示无限制） */
	public static final String COL_PICKUP_START_TIME = "pickup_start_time";

    /** 提货超时时间（为空表示永不超时） */
	public static final String COL_PICKUP_EXPIRE_TIME = "pickup_expire_time";
}
